HEAD ======= >>>>>>> 38470dc1b04fa68e4367c4aa05a819260380c722
GMRC
Stratégie d’apprentissage pour le choix du modèle et des hyperparamètres.
Used for Classification
Need standardized variable
One of the easiest algorithm
Used for predicting a continuous value
Formulas:
\(y = mx + b\) (where \(y\) is the predicted value, \(x\) is the input feature, \(m\) is the slope, and \(b\) is the y-intercept)
Mean Squared Error (MSE) loss function: \(\frac{1}{n}\sum_{i=1}^n(y_i - \hat{y_i})^2\)
Used for predicting a binary outcome (e.g. yes/no, pass/fail)
Formulas:
sigmoid function: $ $ (where \(z\) is the input to the function)
reduces complexity of regression
allow the use of correlated variables
Used for both classification and regression
good for interaction
Understable
Used for both classification and regression
Bootstrap Aggregating (Bagging)
Random Subspace Method (RSM)
Used for classification
Formulas:
Linear SVM : \(y = wx + b\)
Non-Linear SVM : \(y = \sum_{i=1}^{n} \alpha_i y_i K(x_i,x) + b\)
Used for both classification and regression, as well as unsupervised learning
Feedforward: \(a = f(Wx + b)\)
Backpropagation: \(\frac{\partial L}{\partial w} = \frac{\partial L}{\partial a} * \frac{\partial a}{\partial w}\)
Used for unsupervised learning
Distance: \(d(x,y) = \sqrt{\sum_{i=1}^{n}(x_i-y_i)^2}\)
Centroid: \(\mu_j = \frac{\sum_{i=1}^{n} 1_{c_i = j} x_i}{\sum_{i=1}^{n} 1_{c_i = j}}\)
Used for unsupervised learning
Example: dimensionality reduction
XGBoost stands for “eXtreme Gradient Boosting”
It is an ensemble learning method for classification and regression problems
XGBoost is based on decision trees
XGBoost algorithm can handle missing values and can be used for feature selection
Type de distance
Nombre de voisins
https://mlu-explain.github.io/decision-tree/
algorithme d’apprentissage supervisé
tâches de classification et de régression
nœud interne de l’arbre représente une caractéristique ou une propriété,
chaque nœud feuille représente une étiquette de classe ou une valeur
construction en divisant récursivement en fonction de la caractéristique qui donne les sous-ensembles les plus pures
en partant de la racine, qui représente l’ensemble des données d’entraînement
on choisit la caractéristique qui divise le mieux les données en sous-ensembles purs selon le critère choisi
jusqu’à ce qu’un certain critère d’arrêt soit atteint : profondeur max, nombre minimum de données par noeud
feuilles représentent les classes cibles
Arbre utiliser pour classifier de nouvelles données
L’impureté de Gini : \[ Gini = 1 - \sum_{i=1}^{n}P(i|t)^2 \]
\(P(i|t)\) : la probabilité d’appartenance à la classe \(i\) pour les données dans le nœud \(t\).
L’impureté de Gini : probabilité qu’un élément choisit au hasard dans le nœud soit mal classée.
\[ H(S) = -\sum_{i=1}^{n}P(i|S)log(P(i|S)) \]
| couleur | poids (kg) | nombre de pépins | type |
|---|---|---|---|
| rouge | 0.5 | 5 | fraise |
| rouge | 0.8 | 10 | framboise |
| jaune | 0.3 | 2 | cerise |
| vert | 0.7 | 8 | pomme |
| vert | 0.6 | 3 | poire |
| couleur | poids (kg) | nombre de pépins | type |
|---|---|---|---|
| rouge | 0.5 | 5 | fraise |
| rouge | 0.8 | 10 | framboise |
| jaune | 0.3 | 2 | cerise |
| vert | 0.7 | 8 | pomme |
| vert | 0.6 | 3 | poire |
| couleur | poids (kg) | nombre de pépins | type |
|---|---|---|---|
| rouge | 0.5 | 5 | fraise |
| rouge | 0.8 | 10 | framboise |
| jaune | 0.3 | 2 | cerise |
| vert | 0.7 | 8 | pomme |
| vert | 0.6 | 3 | poire |
\[ Gini(base) = 1-1/5^2-1/5^2-1/5^2-1/5^2-1/5^2 \]
\[ Gini(couleur) = 1 - \sum_{i=1}^{n}P(i|couleur)^2 \]
\[ Gini(poids) = 1 - \sum_{i=1}^{n}P(i|poids)^2 \]
\[ Gini(nombre\ de\ pépins) = 1 - \sum_{i=1}^{n}P(i|nombre\ de\ pépins)^2 \]
\[ Gini(rouge) = 1 - \sum_{i=1}^{n}P(i|rouge)^2 = 1 - 0^2 - 0^2-0.5^2-0.5^2 = 0.75 \]
\[ Gini(jaune) = 1 - \sum_{i=1}^{n}P(i|rouge)^2 =\\ 1 - 0^2 - 0^2-1^2-0^2 = 0 \] \[ Gini(vert) = 1 - \sum_{i=1}^{n}P(i|rouge)^2 = 1 - 0.5^2 - 0^2-0.5^2-0^2 = 0.75 \] \[ Impurete\_moyenne = 2/5*Gini(rouge)+1/5*Gini(ver)\\+2/5*Gini(jaune) = 0.6 \]
\[ Gini(nbpepin>4) = 1 - \sum_{i=1}^{n}P(i|nbpepin>4)^2 =\\ 1 -0^2- 0^2 - 1/3^2-1/3^2-1/3^2 = 0.66 \]
\[ Gini(nbpep\leq4) = 1 - \sum_{i=1}^{n}P(i|\leq4)^2 = \\1 -1/2^2- 1/2^2 - 0^2-0^2-0^2 = 0.75 \]
\[Gini(nb\_pep) = 2/3*0.66+1/3*0.75 = 0.69 \]
propriété qui minimise l’impureté de Gini pour séparation : \(nb_pep \leq4\).
On crée deux sous-nœuds pour les fruits avec plus ou moins de 4 pépins
On répète les étapes 1 à 3 pour chaque sous-nœud en utilisant uniquement les données associées à ce sous-nœud. Exemple, \[ Gini(poids | nbpep\leq4) = 1 - \sum_{i=1}^{n}P(i|poids,nbpep\leq4)^2 \]
On répète jusqu’au critère de fin
Criterion : entropy ou gini
splitter : best ou random
Profondeur maximale : \(Max\_depth\)
Nombre minimum d’éléments dans un noeud de feuille : \(Min\_samples\_leaf\)
Nombre maximum de feuilles : \(Max\_leaf\_nodes\)
Nombre minimum de split : \(Min\_samples\_split\)
Pré-élagage : règle d’arrêt évaluer à chaque nouveau nœud qui stoppe la construction de l’arbre -> méthode de haut en bas
Post-élagage : Construction de l’arbre dans son intégralité puis calcul de l’intérêt de chaque nœud en partant des nœuds terminaux -> méthode de bas en haut
Compréhensible par un humain
Pas besoin de normaliser les données
Accepte les données quanti et quali
Pb de surapprentissage
Pb avec les classifications non équilibrés
Interpretability and Random Forests | by Tom Grigg | Towards Data Science
r : rpart https://ouvrir.passages.cnrs.fr/arbre_decision/_book/pratique.html
python : sklearn.tree.DecisionTreeClassifier
https://mlu-explain.github.io/logistic-regression/
Y binaire
Modélisation de \[ P(Y=1) \]
\(P(y=1|x) = \frac{1}{1 + e^{-(b_0 + b_1x_1 + b_2x_2 + ... + b_nx_n)}}\)
Fonction sigmoïdale comprise entre 0 et 1
Y quantitative
\(y = b_0 + b_1x_1 + b_2x_2 + ... + b_nx_n\)
possibilité d’effet non linéaire : \(y = b_0 + b_1x_1^2 + b_2x_2 + ... + b_nx_n\)
Contraindre la valeur des estimateurs des moindres carrés pour réduire la variance
\(\beta = argmin_{\beta} { \sum_{i=1}^{n} (y_i - \beta_0 - \sum_{j=1}^{p}x_{ij}\beta_j)^2 + contrainte}\)
\(\beta = argmin_{\beta} { \sum_{i=1}^{n} (y_i - \beta_0 - \sum_{j=1}^{p}x_{ij}\beta_j)^2 + \lambda \sum_{j=1}^{p} \beta_j^2}\)
\(\beta = argmin_{\beta} { \sum_{i=1}^{n} (y_i - \beta_0 - \sum_{j=1}^{p}x_{ij}\beta_j)^2 + \lambda \sum_{j=1}^{p} |\beta_j|}\)
Compromis ridge lasso
\(\beta = argmin_{\beta} { \sum_{i=1}^{n} (y_i - \beta_0 - \sum_{j=1}^{p}x_{ij}\beta_j)^2 + \lambda \sum_{j=1}^{p} ((1-\alpha)\beta_j^2 + \alpha|\beta_j|)}\)
si \(\alpha =0\) : ridge
si \(\alpha =0\) : lasso
alpha pour définir le type de pénalisation
lambda (force de la pénalisation)
r : glmnet
python : sklearn.linear_model <https://scikit-learn.org/stable/modules/linear_model.html
Séparer l’espace \(X\) par un hyperplan
Classe positive : \(g(x) = \begin{cases} 1 & \text{si } w^Tx + b > 0 \\ -1 & \text{sinon} \end{cases}\)
définir le meilleur hyperplan par algorithme d’optimisation
r : e1071
python : sklearn.svm https://scikit-learn.org/stable/modules/svm.html
\(C\) : constante de régularisation
\(C \searrow\) : augmentation de la marge, des erreurs
\(C \nearrow\) : diminution de la marge, risque surajustement
-
\[ K(\textbf{x}_i, \textbf{x}_j) = \phi(\textbf{x}_i)^T \phi(\textbf{x}_j) \]
SVM peuvent être appliqués sur \(\phi(x)\) sans calculer \(\phi\)
Il suffit de calculer le noyau \(K(x,x')\)
Noyau linéaire:
\[ K(\textbf{x}_i, \textbf{x}_j) = \textbf{x}_i^T \textbf{x}_j \]
Noyau polynomial: \[ K(\textbf{x}_i, \textbf{x}_j) = (\textbf{x}_i^T \textbf{x}_j + c)^d \] où \(c\) est l’hyperparamètre de décalage et \(d\) est le degré du polynôme.
Noyau radial (ou gaussien): \[ K(\textbf{x}_i, \textbf{x}_j) = \exp\left(-\frac{|\textbf{x}_i - \textbf{x}_j|^2}{2\sigma^2}\right) \] où \(\sigma\) est un des hyperparamètres appelé la largeur de bande.
Noyau sigmoid: \[ K(\textbf{x}_i, \textbf{x}_j) = \tanh(\alpha\textbf{x}_i^T \textbf{x}_j + r) \] où \(\alpha\) et \(r\) sont des hyperparamètres.